package com.tfjybj.itoo.exam.provider.service;

import com.dmsdbj.itoo.tool.base.service.BaseServicePlus;
import com.github.pagehelper.PageInfo;
import com.tfjybj.itoo.exam.entity.PaperRecordEntity;
import com.tfjybj.itoo.exam.entity.TemplateDetailsEntity;
import com.tfjybj.itoo.exam.model.*;

import java.util.List;


/**
 * PaperRecordService接口
 * paperRecord表
 *
 * @author 任晓帅
 * @version 2.0.0
 * @since 2.0.0 2018-11-15 19:40:28
 */
public interface PaperRecordService extends BaseServicePlus<PaperRecordEntity> {


    //region 模板生成：模糊查询

    /**
     * 根据考生_id模糊查询paperRecord
     *
     * @param examineeId 考生_id
     * @param pageNo     页码
     * @param pageSize   页数
     * @return 模糊查询的paperRecord
     * @author 任晓帅
     * @since 2.0.0 2018-11-15 19:40:28
     */
    PageInfo<PaperRecordEntity> queryByLikeExamineeId(String examineeId, Integer pageNo, Integer pageSize);
    //endregion

    /* **********************************以下为非模板生成的内容********************************* */

    /**
     * 更新每小题分数
     *
     * @param paperRecordEntity
     * @return
     * @author 侯旭日
     * @since 2.0.0 2018-11-23 19:48:2
     */
    int updateManualJudge(PaperRecordEntity paperRecordEntity);


//    /**
//     * 根据试卷id+学生id回显手动判分部分的题目详情
//     *
//     * @param paperId   试卷id
//     * @param studentId 学生id
//     * @return 试卷详情
//     * @author 樊建华
//     * @since 2018年11月21日15:58:40
//     */
//
//    ItooResult queryNotAutoJudeMainsDetails(String paperId, String studentId);

//    /**
//     * 查询试卷详情--樊建华--2018年11月22日20:53:15
//     *
//     * @param paperId 试卷id
//     * @return 试卷详情
//     */
//    ExamPaperModel selectPaperInfoByPaperRecord(String paperId);


    /**
     * 学生答案和小题顺序--樊建华--2018年11月22日20:53:15
     *
     * @param
     * @return 学生答案和小题顺序
     */

//    List<PaperRecordEntity> selectByExample();

    /**
     * 根据考试id 查询试卷详细信息
     *
     * @param templateId 考试_id
     * @return 试卷详细信息的ExamPaperModel
     * @author 杨楠
     * @since 2.0.0 2018-11-23 19:40:28
     */
    ExamPaperModel selectPaperInfoByPaperRecord(String templateId);

    /**
     * 根据考试id 查询题干详情信息
     *
     * @param templateId 试卷_id
     * @param studentId  学生id
     * @return 提干详情Model集合
     * @author 杨楠
     * @since 2.0.0 2018-11-23 19:40:28
     */
    List<QuestionMainModel> selectMainInfoByPaperRecord(String templateId, String studentId);

    /**
     * 查询所有子题干
     * @param templateId
     * @param examineeId
     * @return
     * @Author 李娜
     */
    List<QuestionMainModel> selectQuestionByChildId(String templateId, String examineeId);

    /**
     * 根据考生查询考生抽到的试题类型
     * @param examineeId
     * @return
     */
    List<TemplateDetailsEntity> selectQuestionTypeByExamineeId(String examineeId);

    /**
     * 根据学生id和试卷id查询小题详情
     *
     * @return 返回根据学生id和试卷id查出小题的详情
     * @author maying
     * @since 2018-11-27 08:10:38
     */
    List<PaperRecordEntity> selStuDetails(String examineeId, String templateId);

    /**
     * 插入答题记录
     *
     * @param recordEntityList 试卷记录实体集合
     * @return 判断是否成功标识
     * @author 杨楠
     * @since 2.0.0 2018-11-23 19:40:28
     */
    int insertAllPaperRecord(List<PaperRecordEntity> recordEntityList, String examineeId, String examinationId);

    /**
     * 查询学生答案
     *
     * @param emaleeId   考考生id
     * @param templateId 试卷记录实体集合
     * @param courseId   课程id
     * @return 判断是否成功标识
     * @author 王雪芬
     * @since 2.0.0 2018-11-23 19:40:28
     */
    List<PaperRecordModel> queryRecordStudentAnswer(String emaleeId, String templateId, String courseId);

    /**
     * 查正在考试抽到错题的考生
     *
     * @param wrongQuestionId 题的Id
     * @return 抽到错题的考生集合
     * @author 任蒙蒙
     * @since 2.0.0 2018-12-17 19:10:28
     */
    List<ExamineeModel> selectExamineeByQuestionId(String wrongQuestionId);

    /**
     * 更新错题对应的新题到表
     *
     * @param examineeId      答题记录的Id
     * @param templateId      新题的id
     * @param wrongQuestionId 答题记录的Id
     * @author 任蒙蒙
     * @since 2.0.0 2018-11-17 17:10:28
     */
    PaperRecordEntity selectPaperRecordId(String examineeId, String templateId, String wrongQuestionId);

    List<String> queryPaperRecordId(String examineeId, String examinationId);

    /**
     * 查询考试所有试题的正确率
     *
     * @param examID 考试ID
     * @return
     * @author 魏恩君
     * @since 2.0.0 2019/1/26
     */
    List<PaperRecordModel> queryQuestionCorrectRate(String examID);

    /**
     * 课程练习-根据用户id查询该用户做题记录
     *
     * @param examineeId
     * @return 是否查询成功
     * @ahthor 贾建清
     * @since 2.0.0 2019-3-27 09:05:19
     */
    List<CoursePaperRecordModel> queryQuestionStudentAnswer(String examineeId);


    /**
     * 课程练习-根据用户id和题干id更新用户答案
     *
     * @param examineeId
     * @param questionId
     * @param coursePaperRecordModel
     * @return 是否更新成功
     * @anthor 贾建清
     * @since 2.0.0 2019-3-27 10:58:24
     */
    boolean updateStudentAnswer(String examineeId, String questionId, CoursePaperRecordModel coursePaperRecordModel);
}
